<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 数组的解构赋值
        // 等号两边数据结构需要保持一致 赋值顺序是按照等号前面的数组项的索引值和等号后面的数组的索引值一一对应
        // 数组的解构赋值声明变量的时候可以设置默认值 默认值在赋予的值是undefined的时候生效
        // var arr = [1, [2]]
        // let [a = 3,[b = 4, c = 5]] = arr
        // console.log(a) // 1
        // console.log(b) // 2
        // console.log(c) // 3
        // 对象的解构赋值 前后数据的数据结构要保持一致
        // 对象的解构赋值是根据key来找的值
        // var obj = {
        //     name: '张三',
        //     age: 15,
        //     tel: false,
        //     isSingle: {
        //         flag: true
        //     }
        // }

        // var {tel='123456', name, age, isSingle: {flag}} = obj

        // console.log(name, age, tel, flag)
        // 字符串的解构赋值
        // var str = "德玛西亚"
        // var [a, b, c, d] = str
        // console.log(a, b, c, d)


        // var arr = [1, 2, 3, 4]

        // var [a, ...b] = arr // 会报错
        // console.log(a, b)

        // var obj = {
        //     name: '张三',
        //     age: 15,
        //     tel: false,
        //     isSingle: {
        //         flag: true
        //     }
        // }
        // console.log({type: '女', ...obj})
        // var {name, ...b} = {type: '女', ...obj}
        // console.log(name)
        // console.log(b)
        // 函数参数的解构赋值 能够符合数组和对象的解构赋值规则
        // 函数参数也可以设置默认值
        // function fun({id, ...rest}) {
        //     console.log(rest)
        // }

        // fun({
        //     name: '张三',
        //     age: '李四',
        //     id: undefined
        // })
        // fun()
        var num = 1234
        var flag = true
    </script>
</body>
</html>